package com.hnx.admin.common.security.core;

import com.hnx.admin.api.security.core.SecurityPropertyAPI;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;

/*
创建人： 倔强的头发
创建时间：2024/7/5
功能描述:

*/
@Getter
@Setter
@ConfigurationProperties(prefix = SecurityProperties.PREFIX)
public class SecurityProperties implements SecurityPropertyAPI {
    // 记住我功能的标识字符串
    private String rememberMe = REMEMBER_ME;
    // 处理登录请求的URL
    private String processesUrl = PROCESS_URL;
    // 登出操作的URL
    private String logout = LOGOUT;
    // 用户名的标识字符串
    private String username = USERNAME;
    private Integer maximum = MAXIMUM;
    // 密码的标识字符串
    private String password = PASSWORD;
    // 验证码的标识字符串
    private String captcha = CAPTCHA;
    // 用户唯一标识的UUID
    private String uuid = UUID;
    // 允许访问的开放API列表
    private String[] openApi;
    // 最大登录失败次数
    private Integer maxNum = MAX_NUM;
    /**
     * 允许的HTTP方法数组，用于CORS（跨源资源共享）配置。
     * 这些方法定义了哪些HTTP请求方法是服务器允许从不同源发起的。
     */
    private String[] allowedMethods  = ALLOWED_METHODS;
    /**
     * 允许的HTTP头部数组，用于CORS（跨源资源共享）配置。
     * 这些头部定义了哪些HTTP头部信息是服务器允许从不同源发起的请求中包含的。
     */
    private String[] allowedHeaders = ALLOWED_HEADERS;
    /**
     * 允许的源数组，用于CORS（跨源资源共享）配置。
     * 这些源定义了哪些域名是服务器允许发起跨源请求的。
     */
    private String[] allowedOrigins = ALLOWED_ORIGINS;
    /**
     * 密码编码器生成的密码的长度。
     * 此属性定义了密码编码器在生成密码时应使用的密码长度。
     * 选择4作为长度是为了平衡安全性与可读性。
     */
    private Integer passwordEncoderLength = 4;
    /**
     * 最大错误重试次数。
     * 定义了在遇到错误时系统尝试重试的次数上限，以确保不会无限期地尝试操作。
     */
    private int maxRetryCount = DEFAULT_MAX_RETRY_COUNT;
    /**
     * 超过最大错误重试次数后锁定时间。
     */
    private int lockTime = DEFAULT_LOCK_TIME;
}
